/**
 * @Title: DoubleLHAN.java
 * @Description:
 * @author zsw
 * <p>
 * Copyright(C) 2018-2019    NPlus
 * Company:   无锡核心信息科技有限公司
 * @version V2.0.0
 * @Date: 13:04 2020/8/4
 * <p>
 * 修改历史:
 * Date                 Author        Version        Description
 * -----------------------------------------------------------------------------------
 * 13:04 2020/8/4       zsw        2.0.0           初始化版本
 */
package com.example.springjpa.util;

/**
 * 双检锁，又叫双重校验锁，综合了懒汉式和饿汉式两者的优缺点整合而成。
 * 看上面代码实现中，特点是在synchronized关键字内外都加了一层 if 条件判断，
 * 这样既保证了线程安全，又比直接上锁提高了执行效率，还节省了内存空间。
 */
public class DoubleLHAN {
    private static DoubleLHAN doubleLHAN;

    private DoubleLHAN() {

    }

    public static DoubleLHAN getDoubleLHAN() {
        if (doubleLHAN == null) {
            synchronized (DoubleLHAN.class) {
                if (doubleLHAN == null) {
                    doubleLHAN = new DoubleLHAN();
                }
            }
        }
        return doubleLHAN;

    }

}
